/*
  ES6 对象的 新增的 静态方法：
  Object.getOwnPropertyDescriptor(obj, prop)
  作用：如果属性存在，返回指定对象某个 自有属性的  属性描述符，
          （自有属性指的是直接赋予该对象的属性，私有属性，
            不需要从原型链上进行查找的属性）
            否则 返回 undefined，一次只能获取一个属性描述符
  Object.getOwnPropertyDescriptors(obj)：获取所有的属性描述符

      属性描述符是个对象，默认包括4个选项
      value: 该属性对应的值,
      configurable: true，可删除
      enumerable: true，可枚举（可被for...in遍历出来）
      writable: true，可修改

      两个访问器：添加了对应的 访问器 才有效，默认是没有添加的
      get:  getter访问器，默认值undefined
      set：setter访问器，默认值undefined

*/
const pretty = {
  name: '宋轶',
  height: 168
}
// const descriptor = Object.getOwnPropertyDescriptor(pretty, 'height')
// console.log(descriptor)
// {
//   enumerable: true,
//     configurable: true,
//       value: 168,
//         writable: true
// }
// 可删除
// delete pretty.height
// console.log(pretty)
// 可枚举
// for (let key in pretty) {
//   console.log(key, pretty[key])
// }
// 可修改
// pretty.height = 170
// console.log(pretty)

// const descriptor = Object.getOwnPropertyDescriptor(pretty, 'gender')
// console.log(descriptor)// undefined

// 获取对象所有属性描述符
const descriptors = Object.getOwnPropertyDescriptors(pretty)
console.log(descriptors)
